package smap;

import BD.AlunoBD;
import BD.AtividadesBD;
import BD.ExameBD;
import BD.ProfessorBD;
import BD.BancaProfessorBD;
import BD.BancaBD;
import BD.QualificacaoBD;
import BD.DefesaBD;
import ConexaoBackupBD.MetodosVerificacaoBD;
import DAO.*;
import java.sql.SQLException;

import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class TelaCadExame extends javax.swing.JDialog {

    //carregar combo de professor
    List<ProfessorBD> listaprofessor = new ArrayList<ProfessorBD>();
    
    //lista para inserção de professores na banca
    List<BancaProfessorBD> listabanprof = new ArrayList<BancaProfessorBD>();
    
    private int codTeseRecebido; //variavel criada para receber o codTese da tela anterior
    private boolean cadastrar; //true para cadastrar, false para alterar
    ExameBD exBD; //instancia que pode ser de qualificacaoBD ou defesaBD
    BancaBD bancaRecebida; //Necessaria para o método alterar.
    
    public int getCodTeseRecebido() {
        return codTeseRecebido;
    }

    public void setCodTeseRecebido(int codTeseRecebido) {
        this.codTeseRecebido = codTeseRecebido;
    }
    
    public void setarInstanciaExame(ExameBD ex){
        this.exBD = ex;
    }
    
    public boolean isCadastrar() {
        return cadastrar;
    }

    public void setCadastrar(boolean cadastrar) {
        this.cadastrar = cadastrar;
    }

    public TelaCadExame(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }

    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        grpTipoPos = new javax.swing.ButtonGroup();
        grpTipo = new javax.swing.ButtonGroup();
        grpIntExt = new javax.swing.ButtonGroup();
        jPanel2 = new javax.swing.JPanel();
        btnVoltar = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        chbHomologada = new javax.swing.JCheckBox();
        jLabel7 = new javax.swing.JLabel();
        txtData = new com.toedter.calendar.JDateChooser();
        jPanel3 = new javax.swing.JPanel();
        rdbInterno = new javax.swing.JRadioButton();
        rdbExterno = new javax.swing.JRadioButton();
        jLabel1 = new javax.swing.JLabel();
        cmbProfessor = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        txtNome = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtInstituicao = new javax.swing.JTextField();
        mskCpf = new javax.swing.JFormattedTextField();
        jLabel5 = new javax.swing.JLabel();
        cmbFuncao = new javax.swing.JComboBox();
        jPanel7 = new javax.swing.JPanel();
        rdbMestrado = new javax.swing.JRadioButton();
        rdbDoutorado = new javax.swing.JRadioButton();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblBanca = new javax.swing.JTable();
        btnRemover = new javax.swing.JButton();
        btnAdicionar = new javax.swing.JButton();
        btnConcluir = new javax.swing.JButton();
        pnlExame = new javax.swing.JPanel();
        lblDataIngresso = new javax.swing.JLabel();
        txtDataExame = new com.toedter.calendar.JDateChooser();
        cmbSituacao = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Cadastrar exame de avaliação");
        setResizable(false);

        jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(192, 192, 192)));

        btnVoltar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/voltar-icon.png"))); // NOI18N
        btnVoltar.setText("Voltar");
        btnVoltar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVoltarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnVoltar, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(422, 422, 422))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(btnVoltar, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(192, 192, 192)), "Homologação"));

        chbHomologada.setText("Homologada");
        chbHomologada.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chbHomologadaActionPerformed(evt);
            }
        });

        jLabel7.setText("Data:");

        txtData.setEnabled(false);

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(chbHomologada)
                .addGap(18, 18, 18)
                .addComponent(jLabel7)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtData, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(txtData, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(chbHomologada)
                .addComponent(jLabel7))
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(192, 192, 192)), "Membros"));

        grpIntExt.add(rdbInterno);
        rdbInterno.setSelected(true);
        rdbInterno.setText("Interno");
        rdbInterno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdbInternoActionPerformed(evt);
            }
        });

        grpIntExt.add(rdbExterno);
        rdbExterno.setText("Externo");
        rdbExterno.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdbExternoActionPerformed(evt);
            }
        });

        jLabel1.setText("Avaliador:");

        cmbProfessor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbProfessorActionPerformed(evt);
            }
        });

        jLabel2.setText("* Nome:");

        jLabel3.setText("* Instituição:");

        jLabel4.setText("* Cpf:");

        try {
            mskCpf.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        jLabel5.setText("Função:");

        cmbFuncao.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Titular", "Suplente" }));

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel3Layout.createSequentialGroup()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3)
                            .addComponent(jLabel4)
                            .addComponent(jLabel5))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(cmbProfessor, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(jPanel3Layout.createSequentialGroup()
                                .addComponent(mskCpf, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addComponent(txtNome, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(cmbFuncao, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(txtInstituicao, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
                        .addGap(0, 76, Short.MAX_VALUE)
                        .addComponent(rdbInterno)
                        .addGap(18, 18, 18)
                        .addComponent(rdbExterno)
                        .addGap(61, 61, 61))))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rdbInterno)
                    .addComponent(rdbExterno))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(cmbProfessor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(mskCpf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtInstituicao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(cmbFuncao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray), "Tipo de Pos"));

        grpTipoPos.add(rdbMestrado);
        rdbMestrado.setSelected(true);
        rdbMestrado.setText("Mestrado");

        grpTipoPos.add(rdbDoutorado);
        rdbDoutorado.setText("Doutorado");

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(rdbMestrado)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
                .addComponent(rdbDoutorado)
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rdbMestrado)
                    .addComponent(rdbDoutorado)))
        );

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray), "Composição da banca"));

        tblBanca.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Avaliador", "Instituição", "Cpf", "Função"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblBanca.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblBanca.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(tblBanca);
        tblBanca.getColumnModel().getColumn(2).setMinWidth(110);
        tblBanca.getColumnModel().getColumn(2).setPreferredWidth(110);
        tblBanca.getColumnModel().getColumn(2).setMaxWidth(120);
        tblBanca.getColumnModel().getColumn(3).setMinWidth(90);
        tblBanca.getColumnModel().getColumn(3).setPreferredWidth(90);
        tblBanca.getColumnModel().getColumn(3).setMaxWidth(110);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE)
        );

        btnRemover.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/removelista-icon.png"))); // NOI18N
        btnRemover.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRemoverActionPerformed(evt);
            }
        });

        btnAdicionar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/addlista-icon.png"))); // NOI18N
        btnAdicionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAdicionarActionPerformed(evt);
            }
        });

        btnConcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/concluido-icon.png"))); // NOI18N
        btnConcluir.setText("Concluir");
        btnConcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConcluirActionPerformed(evt);
            }
        });

        pnlExame.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray), "Data e situação do exame"));

        lblDataIngresso.setText("* Data:");

        cmbSituacao.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "A ser avaliado", "Aprovado", "Reprovado" }));
        cmbSituacao.setEnabled(false);

        jLabel6.setText("Situação:");

        javax.swing.GroupLayout pnlExameLayout = new javax.swing.GroupLayout(pnlExame);
        pnlExame.setLayout(pnlExameLayout);
        pnlExameLayout.setHorizontalGroup(
            pnlExameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlExameLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblDataIngresso)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtDataExame, javax.swing.GroupLayout.PREFERRED_SIZE, 133, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cmbSituacao, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pnlExameLayout.setVerticalGroup(
            pnlExameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlExameLayout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addGroup(pnlExameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlExameLayout.createSequentialGroup()
                        .addComponent(lblDataIngresso)
                        .addGap(6, 6, 6))
                    .addComponent(txtDataExame, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlExameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(cmbSituacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel6))))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnAdicionar)
                    .addComponent(btnRemover))
                .addGap(12, 12, 12)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(pnlExame, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnConcluir, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(410, 410, 410))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(pnlExame, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(113, 113, 113)
                        .addComponent(btnAdicionar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnRemover)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnConcluir)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        java.awt.Dimension dialogSize = getSize();
        setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
    }// </editor-fold>//GEN-END:initComponents

    public void carregarComboProfessor(){    
        ProfessorDAO proDao = new ProfessorDAO();
        listaprofessor.removeAll(listaprofessor); //limpa a lista
        listaprofessor = proDao.carregarComboProfessor(); //carrega a lista
        
        for(int i = 0; i<listaprofessor.size(); i++){
            cmbProfessor.addItem(listaprofessor.get(i));
        }
    }

    private void btnVoltarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVoltarActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnVoltarActionPerformed

    private void chbHomologadaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chbHomologadaActionPerformed
        if(chbHomologada.isSelected() == true){
            txtData.setEnabled(true); //habilitar o campo data
        }
        else
        {
            txtData.setDate(null);//limpa o campo data
            txtData.setEnabled(false); //travar o campo data
        }
    }//GEN-LAST:event_chbHomologadaActionPerformed

    private void rdbInternoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdbInternoActionPerformed
        cmbProfessor.setEnabled(true); //habilitar o combobox de professor
        carregarDadosDoCombo();
    }//GEN-LAST:event_rdbInternoActionPerformed

    private void cmbProfessorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbProfessorActionPerformed
         carregarDadosDoCombo();
    }//GEN-LAST:event_cmbProfessorActionPerformed

    private void rdbExternoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdbExternoActionPerformed
        cmbProfessor.setEnabled(false);
        txtInstituicao.setText("");
        txtInstituicao.setEnabled(true);
        txtNome.setText("");
        txtNome.setEnabled(true);
        mskCpf.setText("");
        mskCpf.setEnabled(true);
    }//GEN-LAST:event_rdbExternoActionPerformed

    private void btnAdicionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAdicionarActionPerformed
        //campos vazios
        if(txtNome.getText().trim().length() == 0 || txtInstituicao.getText().trim().length() == 0
                || mskCpf.getText().equals("   .   .   -  ")){
            
            JOptionPane.showMessageDialog(null,"Campos nome, instituição e cpf"
                    + " são obrigatórios.","Campos obrigatórios", JOptionPane.INFORMATION_MESSAGE);          
        }else{           
            
            // adicionando professor e seus dados numa lista
            BancaProfessorBD bpBD = new BancaProfessorBD();
            if(rdbInterno.isSelected() == true){
                bpBD.setCod_professor(listaprofessor.get(cmbProfessor.getSelectedIndex()).getCodigo());
            }
            bpBD.setNomeProfessor(txtNome.getText().toString());
            bpBD.setCpf(mskCpf.getText().toString());
            bpBD.setInstituicao(txtInstituicao.getText().toString());
            bpBD.setFuncao(cmbFuncao.getSelectedItem().toString());
            
            if(listabanprof.contains(bpBD)){
                JOptionPane.showMessageDialog(null,"Avaliador já está cadastrado.",
                        "Avaliador duplicado", JOptionPane.INFORMATION_MESSAGE);
            }else{
                
                listabanprof.add(bpBD);
               //conta o numero de linhas para add informações na linha correta
                int linha = tblBanca.getRowCount();

                //define um modelo para a Jtable
                DefaultTableModel tbm = (DefaultTableModel)tblBanca.getModel();

                tbm.addRow(new String[1]); 
                tblBanca.setValueAt(txtNome.getText().toString(), linha, 0);
                tblBanca.setValueAt(txtInstituicao.getText().toString(), linha, 1);
                tblBanca.setValueAt(mskCpf.getText().toString(), linha, 2);
                tblBanca.setValueAt(cmbFuncao.getSelectedItem().toString(), linha, 3);       
            }
        }
    }//GEN-LAST:event_btnAdicionarActionPerformed

    private void btnRemoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoverActionPerformed
        int linhaRemover = tblBanca.getSelectedRow();
        if(linhaRemover == -1){
            JOptionPane.showMessageDialog(null,"Selecione um avaliador para remover.",
                    "Selecione o avaliador", JOptionPane.INFORMATION_MESSAGE);             
        }else{
            listabanprof.remove(linhaRemover);
            DefaultTableModel tbm = (DefaultTableModel)tblBanca.getModel();         
            tbm.removeRow(linhaRemover);    
        }        
    }//GEN-LAST:event_btnRemoverActionPerformed

    private void btnConcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConcluirActionPerformed
        if(isCadastrar()){//true = cadastro
            if(cadastrarExameBancaBancProf()){ //retorna true para cadastro ok
                JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso.", 
                    "Cadastro", JOptionPane.INFORMATION_MESSAGE);
                this.dispose();
            }else{
                JOptionPane.showMessageDialog(null, "Cadastro não foi realizado.", 
                        "Erro no cadastro", JOptionPane.INFORMATION_MESSAGE);
            }    
        }else{//alterar
            if(verificarSituacaoDePreExames()){//se não existir exames pré cadastrados com = situação, deixa alterar
                if(alterarExameBancaBancProf()){
                    JOptionPane.showMessageDialog(null, "Alteração realizada com sucesso.", 
                        "Alterar", JOptionPane.INFORMATION_MESSAGE);
                    this.dispose();
                }else{
                    JOptionPane.showMessageDialog(null, "Alteração não foi realizada.", 
                        "Alterar", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        }

    }//GEN-LAST:event_btnConcluirActionPerformed

    /** Veriricações de campos not null e chamada de métodos para cadastro de banca, banca professor e exame. */
    private boolean cadastrarExameBancaBancProf (){
        BancaBD banBD = new BancaBD();  
        BancaDAO banDao = new BancaDAO();
        BancaProfessorDAO banproDao = new BancaProfessorDAO();
        AtividadesDAO ativDao = new AtividadesDAO();
        AtividadesBD atBD = new AtividadesBD();
        MetodosVerificacaoBD metBD = new MetodosVerificacaoBD();
        TeseDAO tesDao = new TeseDAO();
        
        //Setando o nível da banca
        if(rdbMestrado.isSelected() == true){
            banBD.setNivel("Mestrado");
        }else{
            if(rdbDoutorado.isSelected() == true){
                banBD.setNivel("Doutorado");
            }
        }
        
        //setar se foi homologada e data de homologação.
        if(chbHomologada.isSelected() == true){
            if(txtData.getDate() == null){
                JOptionPane.showMessageDialog(null,"Selecione uma data válida de homologação da banca.",
                    "Selecione uma data", JOptionPane.INFORMATION_MESSAGE);
                return false;
             }else{
                banBD.setHomologada(true);
                //Metodos para conversões de data
                java.util.Date data = txtData.getDate();
                java.sql.Date dataJDBC = new java.sql.Date(data.getTime());  
                banBD.setData_homolocacao(dataJDBC);
            }
        }else{
            banBD.setHomologada(false); //não foi homologada
            banBD.setData_homolocacao(null); //data null
        }
        
        if(txtDataExame.getDate() == null){ //Campo data not null
            JOptionPane.showMessageDialog(null,"Selecione uma data válida para o exame.",
                        "Selecione uma data", JOptionPane.INFORMATION_MESSAGE);
            return false;
        }else{
            //verificando se existe professores cadastrados na banca
            if(!listabanprof.isEmpty()){ 
                //inserção de banca / bancaProfessor / exame (qualif. ou defesa)   
                /*Neste momento uma banca será cadastrada e seu ID irá ser
                        salvo na variavel static Cod_Banca_ultima(BancaProfessorBD)*/
                if(banDao.inserirBanca(banBD)){
                    listabanprof = atualizaLista(listabanprof, BancaProfessorBD.getCod_banca_ultimo());
                    if(banproDao.inserirBancaProfessor(listabanprof)){
                        //dados do exame (Qualificacao ou Defesa)
                        java.util.Date data = txtDataExame.getDate();
                        java.sql.Date dataJDBC = new java.sql.Date(data.getTime());
                        exBD.setCod_banca(BancaProfessorBD.getCod_banca_ultimo()); //CodBanca sera cadastrado pela variavel static
                        exBD.setCod_tese(codTeseRecebido);
                        exBD.setData(dataJDBC);
                        exBD.setSituacao(cmbSituacao.getSelectedItem().toString());

                        //inserindo exame
                        if(exBD instanceof QualificacaoBD){
                            ExameInterfaceDAO exDao = new QualificacaoDAO();
                            if(exDao.inserir(exBD)){
                                AlunoBD aluno = new AlunoBD();
                                aluno = tesDao.buscarRaNome(codTeseRecebido);
                                atBD.setData(metBD.formatarDataEua(txtDataExame.getDate()));
                                atBD.setTituloAtividade("Apresentação de qualificação da tese do aluno " + aluno.getNome() 
                                       + ", " + aluno.getRa() + ".");
                                atBD.setDescricaoAtividade("O aluno " + aluno.getNome() + ", Ra " + aluno.getRa() + 
                                        ", possui um exame de qualificação marcada para hoje.");
                                atBD.setHorario("09h00");
                                atBD.setUsuarioSistema(1); //usuario não pode alterar
                                atBD.setstatusAtividade(0); //não concluido
                                    ativDao.inserirAtividade(atBD);

                                return true;
                            } 
                        }else{
                            if(exBD instanceof DefesaBD){
                                ExameInterfaceDAO exDao = new DefesaDAO();
                                if(exDao.inserir(exBD)){
                                    AlunoBD aluno = new AlunoBD();
                                    aluno = tesDao.buscarRaNome(codTeseRecebido);
                                    atBD.setData(metBD.formatarDataEua(txtDataExame.getDate()));
                                    atBD.setTituloAtividade("Apresentação de defesa da tese do aluno " + aluno.getNome() 
                                           + ", " + aluno.getRa() + ".");
                                    atBD.setDescricaoAtividade("O aluno " + aluno.getNome() + ", Ra " + aluno.getRa() + 
                                            ", possui um exame de defesa marcada para hoje.");
                                    atBD.setHorario("09h00");
                                    atBD.setUsuarioSistema(1); //usuario não pode alterar
                                    atBD.setstatusAtividade(0); //não concluido
                                        ativDao.inserirAtividade(atBD);

                                        return true;
                                    }                           
                            }
                        }
                    }
                }
                return false;
           }else{
                JOptionPane.showMessageDialog(null,"Pelo menos um avaliador deve ser "
                    + "adicionado a banca.","Adicione avaliador", JOptionPane.INFORMATION_MESSAGE);
                return false;
           } 
        }        
    }
    
    /** Verificações de campos not null e chamada de métodos para alterar banca, exame. Exclusão e inclusão de bancaprofessor*/
    private boolean alterarExameBancaBancProf(){
        BancaBD banBD = new BancaBD(); 
        BancaDAO banDao = new BancaDAO(); 
        BancaProfessorDAO banproDao = new BancaProfessorDAO();
        AtividadesDAO atDao = new AtividadesDAO();
        
        //Setando o nível da banca
        if(rdbMestrado.isSelected() == true){
            banBD.setNivel("Mestrado");
        }else{
            if(rdbDoutorado.isSelected() == true){
                banBD.setNivel("Doutorado");
            }
        }
        
        //setar se foi homologada e data de homologação.
        if(chbHomologada.isSelected() == true){
            if(txtData.getDate() == null){
                JOptionPane.showMessageDialog(null,"Selecione uma data válida de homologação da banca.",
                    "Selecione uma data", JOptionPane.INFORMATION_MESSAGE);
                return false;
             }else{
                banBD.setHomologada(true);
                //Metodos para conversões de data
                java.util.Date data = txtData.getDate();
                java.sql.Date dataJDBC = new java.sql.Date(data.getTime());  
                banBD.setData_homolocacao(dataJDBC);
            }
        }else{
            banBD.setHomologada(false); //não foi homologada
            banBD.setData_homolocacao(null); //data null
        }
        
        if(txtDataExame.getDate() == null){ //Campo data not null
            JOptionPane.showMessageDialog(null,"Selecione uma data válida para o exame.",
                        "Selecione uma data", JOptionPane.INFORMATION_MESSAGE);
            return false;
        }else{
            //verificando se existe professores cadastrados na banca (array list)
            if(!listabanprof.isEmpty()){ 
                //Setando o código da banca para alteração.
                banBD.setCod_banca(bancaRecebida.getCod_banca());
                if(banDao.alterarBanca(banBD)){
                    //Exclui os professores relacionados anteriormente a banca
                    banproDao.excluiBancaProfessor(banBD.getCod_banca());
                    //Atualiza a lista dos professores setando o codigo da banca
                    listabanprof = atualizaLista(listabanprof, banBD.getCod_banca());
                    //insere novamente os professores na banca.
                    if(banproDao.inserirBancaProfessor(listabanprof)){
                        //dados do exame (Qualificacao ou Defesa)
                        java.util.Date data = txtDataExame.getDate();
                        java.sql.Date dataJDBC = new java.sql.Date(data.getTime());
                        exBD.setCod_banca(banBD.getCod_banca()); //CodBanca sera cadastrado pela variavel static
                        exBD.setCod_tese(codTeseRecebido);
                        exBD.setData(dataJDBC);
                        exBD.setSituacao(cmbSituacao.getSelectedItem().toString());

                        //inserindo exame
                        if(exBD instanceof QualificacaoBD){
                            ExameInterfaceDAO exDao = new QualificacaoDAO();
                            if(exDao.alterar(exBD)){
                                //alterar tabela tese de acordo com a situação.
                                TeseDAO tesDAO = new TeseDAO();
                                
                                //alterar a atividade relacionada
                                AtividadesBD atBD = new AtividadesBD();
                                MetodosVerificacaoBD metBD = new MetodosVerificacaoBD();
                                
                                //recupera o nome do aluno
                                AlunoBD aluno = new AlunoBD();
                                aluno = tesDAO.buscarRaNome(codTeseRecebido);
                                
                                //Buscar código
                                List<AtividadesBD> listaAt = new ArrayList<AtividadesBD>();
                                listaAt = atDao.filtro("tituloatividade", "Apresentação de qualificação da tese do aluno " + aluno.getNome() 
                                       + ", " + aluno.getRa() + ".", "Atividades");
                                atBD = listaAt.get(0);

                                atBD.setData(metBD.formatarDataEua(txtDataExame.getDate()));
                                
                                
                                if(exBD.getSituacao().equals("Aprovado")){
                                    //alterar na tabela tese, setando como Qualificada = true.
                                    tesDAO.alterarTeseQualificada(exBD.getCod_tese(),true);
                                    
                                    //alterar para concluida o exame
                                    atBD.setstatusAtividade(1);
                                    
                                    try {
                                        atDao.alterarAtividade(atBD);
                                    } catch (SQLException ex) {
                                        Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                    }
                                    
                                    return true;    
                                }else{
                                    //Se não existir nenhum exame como aprovado, seta false
                                    if(!exDao.verificarSituacaoParaCadastroExame(exBD.getCod_tese())){
                                        tesDAO.alterarTeseQualificada(exBD.getCod_tese(),false);
                                    }
                                    
                                    if(exBD.getSituacao().equals("Reprovado")){
                                        //alterar para concluida o exame
                                        atBD.setstatusAtividade(1);
                                        try {
                                            atDao.alterarAtividade(atBD);
                                        } catch (SQLException ex) {
                                            Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                        } 
                                    }else{
                                        atBD.setstatusAtividade(0);

                                        try {
                                            atDao.alterarAtividade(atBD);
                                        } catch (SQLException ex) {
                                            Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                        }    
                                    }
                                    
                                    return true; 
                                }

                            } 
                        }else{
                            if(exBD instanceof DefesaBD){
                                ExameInterfaceDAO exDao = new DefesaDAO();
                                if(exDao.alterar(exBD)){
                                    
                                    //alterar tabela tese de acordo com a situação.
                                    TeseDAO tesDAO = new TeseDAO();
                                    
                                
                                    //alterar a atividade relacionada
                                    AtividadesBD atBD = new AtividadesBD();
                                    MetodosVerificacaoBD metBD = new MetodosVerificacaoBD();

                                    //recupera o nome do aluno
                                    AlunoBD aluno = new AlunoBD();
                                    aluno = tesDAO.buscarRaNome(codTeseRecebido);

                                    //Buscar código
                                    List<AtividadesBD> listaAt = new ArrayList<AtividadesBD>();
                                    listaAt = atDao.filtro("tituloatividade", "Apresentação de defesa da tese do aluno " + aluno.getNome() 
                                           + ", " + aluno.getRa() + ".", "Atividades");
                                    atBD = listaAt.get(0);

                                    atBD.setData(metBD.formatarDataEua(txtDataExame.getDate()));
                                    
                                    if(exBD.getSituacao().equals("Aprovado")){
                                        //alterar a tabela tese, setando como Defendida = true.
                                        tesDAO.alterarTeseDefendida(exBD.getCod_tese(), true);
                                        
                                        //alterar para concluida o exame
                                        atBD.setstatusAtividade(1);

                                        try {
                                            atDao.alterarAtividade(atBD);
                                        } catch (SQLException ex) {
                                            Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                        }
                                        return true;
                                    }
                                    else{
                                        //Se não existir nenhum exame como aprovado, seta false
                                        if(!exDao.verificarSituacaoParaCadastroExame(exBD.getCod_tese())){
                                            tesDAO.alterarTeseDefendida(exBD.getCod_tese(), false);
                                        }
                                        
                                        if(exBD.getSituacao().equals("Reprovado")){
                                            //alterar para concluida o exame
                                            atBD.setstatusAtividade(1);
                                            try {
                                                atDao.alterarAtividade(atBD);
                                            } catch (SQLException ex) {
                                                Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                            } 
                                        }else{
                                            atBD.setstatusAtividade(0);

                                            try {
                                                atDao.alterarAtividade(atBD);
                                            } catch (SQLException ex) {
                                                Logger.getLogger(TelaCadExame.class.getName()).log(Level.SEVERE, null, ex);
                                            }    
                                        }
                                        
                                        return true;
                                    }
                                }                           
                            }
                        }
                    }
                }
                return false;
           }else{
                JOptionPane.showMessageDialog(null,"Pelo menos um avaliador deve ser "
                    + "adicionado a banca.","Adicione avaliador", JOptionPane.INFORMATION_MESSAGE);
                return false;
           }
        }
    }
    
    /** Método para verificar se existe algum pré exame já cadastrado na mesma situação. */
    private boolean verificarSituacaoDePreExames(){
        if(!cadastrar){ //quer dizer q a tela esta ativada para alteração
            if(exBD instanceof QualificacaoBD){
                ExameInterfaceDAO quaDao = new QualificacaoDAO();
                //se existir um exame pré cadastrado na mesma situação, não deixa setar esta situação
                if(quaDao.verificarMesmaSituacaoExame(exBD.getCod_tese(), exBD.getCodigo(), cmbSituacao.getSelectedItem().toString())){
                    JOptionPane.showMessageDialog(null, "Já existe uma avaliação de qualificação marcada ou esta tese já esta aprovada. Altere a situação.", 
                        "Situação inválida.", JOptionPane.INFORMATION_MESSAGE);
                }
                else{
                    return true;
                }
            }else{
                if(exBD instanceof DefesaBD){
                    ExameInterfaceDAO defDao = new DefesaDAO();
                    //se existir um exame pré cadastrado na mesma situação, não deixa setar esta situação
                    if(defDao.verificarMesmaSituacaoExame(exBD.getCod_tese(), exBD.getCodigo(), cmbSituacao.getSelectedItem().toString())){
                        JOptionPane.showMessageDialog(null, "Já existe uma avaliação de defesa marcada ou esta tese já esta aprovada. Altere a situação.", 
                        "Situação inválida.", JOptionPane.INFORMATION_MESSAGE);
                    }else{
                        return true;
                    }
                }
            }
        }
        return false;
    }
    
    /**Professor escolhido e'do tipo interno, logo carrega as informações do mesmo. */
    private void carregarDadosDoCombo (){
        txtInstituicao.setText("Unifesp");
        txtInstituicao.setEnabled(false);
        txtNome.setEnabled(false);
        mskCpf.setEnabled(false);
        
        if(cmbProfessor.getSelectedIndex() == -1 || cmbProfessor.getSelectedIndex() == 0){
            txtNome.setText("");
            mskCpf.setText("");
            txtInstituicao.setText("");
        }else
        {
            txtNome.setText(cmbProfessor.getSelectedItem().toString());
            txtNome.setEnabled(false);
            mskCpf.setText(listaprofessor.get(cmbProfessor.getSelectedIndex()).getCpf());
            mskCpf.setEnabled(false);
        }
    }
    
    //adiciona a todos os professores da lista, o código da banca a qual pertencem.
    private List<BancaProfessorBD> atualizaLista(List<BancaProfessorBD> lista, int codBanca){
        for (int i = 0; i < lista.size(); i++) {
            lista.get(i).setCod_banca(codBanca);
        }
        return lista;
    }
    
    public void recebeObjetos(BancaBD ban, List<BancaProfessorBD> lista, ExameBD ex){
        exBD = ex; //recebe um objeto do tipo de exame que pode ser de qualificacao ou defesa.
        listabanprof = lista; //recebe uma lista com os professores cadastrados para a banca.
        bancaRecebida = ban;
        
        /*Seta os dados da banca*/
        if(bancaRecebida.getHomologada()){
            chbHomologada.setSelected(true);
            txtData.setEnabled(true);
        }else{
            chbHomologada.setSelected(false);
        }
        
        //Setando o nível da banca
        if(bancaRecebida.getNivel().equals("Mestrado")){
            rdbMestrado.setSelected(true);
            rdbDoutorado.setSelected(false);
        }else{
            if(bancaRecebida.getNivel().equals("Doutorado")){
                rdbMestrado.setSelected(false);
                rdbDoutorado.setSelected(true);
            }
        }
        
        txtData.setDate(bancaRecebida.getData_homolocacao());
        
        /*preenche o jTable com os dados dos professores da banca*/
        
        //Define o Modelo da JTable
        DefaultTableModel tbm = (DefaultTableModel)tblBanca.getModel();         
        
        //Remove a Tabela Antiga
        for(int i = tbm.getRowCount()-1; i >= 0; i--){ 
            tbm.removeRow(i); 
        } 
        
        int i = 0; 
        
        //Preenche a Tabela
        for(BancaProfessorBD bp : listabanprof){            
            tbm.addRow(new String[1]); 
            tblBanca.setValueAt(bp.getNomeProfessor(), i, 0); //Objeto Linha Coluna
            tblBanca.setValueAt(bp.getInstituicao(), i, 1); 
            tblBanca.setValueAt(bp.getCpf(), i, 2);
            tblBanca.setValueAt(bp.getFuncao(), i, 3);
            i++; 
        }
        
        /*seta os dados referente ao exame*/
        txtDataExame.setDate(ex.getData());
        cmbSituacao.setSelectedItem(ex.getSituacao());
        
        //libera para alterar situação.
        cmbSituacao.setEnabled(true);
    }

    public static void main(String args[]) {

        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(TelaCadExame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(TelaCadExame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(TelaCadExame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(TelaCadExame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                TelaCadExame dialog = new TelaCadExame(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAdicionar;
    private javax.swing.JButton btnConcluir;
    private javax.swing.JButton btnRemover;
    private javax.swing.JButton btnVoltar;
    private javax.swing.JCheckBox chbHomologada;
    private javax.swing.JComboBox cmbFuncao;
    private javax.swing.JComboBox cmbProfessor;
    private javax.swing.JComboBox cmbSituacao;
    private javax.swing.ButtonGroup grpIntExt;
    private javax.swing.ButtonGroup grpTipo;
    private javax.swing.ButtonGroup grpTipoPos;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblDataIngresso;
    private javax.swing.JFormattedTextField mskCpf;
    private javax.swing.JPanel pnlExame;
    private javax.swing.JRadioButton rdbDoutorado;
    private javax.swing.JRadioButton rdbExterno;
    private javax.swing.JRadioButton rdbInterno;
    private javax.swing.JRadioButton rdbMestrado;
    private javax.swing.JTable tblBanca;
    private com.toedter.calendar.JDateChooser txtData;
    private com.toedter.calendar.JDateChooser txtDataExame;
    private javax.swing.JTextField txtInstituicao;
    private javax.swing.JTextField txtNome;
    // End of variables declaration//GEN-END:variables

}
